package br.unicamp.ic.inf300.arena.persistencia.dao.impl;

import br.unicamp.ic.inf300.arena.modelo.pessoa.Funcionario;
import br.unicamp.ic.inf300.arena.modelo.pessoa.Pessoa;
import br.unicamp.ic.inf300.arena.modelo.pessoa.TipoPessoa;
import br.unicamp.ic.inf300.arena.persistencia.dao.IFuncionarioDAO;
import br.unicamp.ic.inf300.framework.persistencia.SQLUtil;

public class FuncionarioDAOHsql implements IFuncionarioDAO {

	public Funcionario inserir(Pessoa pessoa, String departamento) {
		try {
			Funcionario funcionario = null;
			String query = new String(" INSERT INTO " + IFuncionarioDAO.TABELA_BD + " (id, departamento) VALUES (?, ?) ");
			Object[] params = new Object[]{pessoa.getId(), departamento};
			int result = SQLUtil.update(query, params);
			if (result == 1) {
				pessoa.setTipoPessoa(TipoPessoa.ESPECTADOR_FUNCIONARIO);
				funcionario = new Funcionario(pessoa, departamento);
			}
			return funcionario;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public boolean atualizar(Integer id, String departamento) {
		try {
			String query = new String(" UPDATE " + IFuncionarioDAO.TABELA_BD + " SET departamento = ? WHERE id = ? ");
			Object[] params = new Object[]{departamento, id};
			int result = SQLUtil.update(query, params);
			return result == 1;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

	public boolean remover(Integer id) {
		try {
			String query = new String(" DELETE FROM " + IFuncionarioDAO.TABELA_BD + " WHERE id = ? ");
			Object[] params = new Object[]{id};
			int result = SQLUtil.update(query, params);
			return result == 1;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
}